.\" Copyright (C) 2023 Breno Leitao <leitao@debian.org>
.\"
.\" SPDX-License-Identifier: LGPL-2.0-or-later
.\"
.TH io_uring_prep_cmd 3 "July 27, 2023" "liburing-2.5" "liburing Manual"
.SH NAME
io_uring_prep_cmd_sock \- prepare a command request for a socket
.SH SYNOPSIS
.nf
.B #include <liburing.h>
.PP
.BI "void io_uring_prep_cmd_sock(struct io_uring_sqe *" sqe ","
.BI "                            int " cmd_op ","
.BI "                            int " fd ","
.BI "                            int " level ","
.BI "                            int " optname ","
.BI "                            void " *optval ","
.BI "                            int " optlen ");"
.fi
.SH DESCRIPTION
.PP
The
.BR io_uring_prep_cmd_sock (3)
function prepares an cmd request for a socket. The submission queue entry
.I sqe
is setup to use the socket file descriptor pointed to by
.I fd
to start an command operation defined by
.I cmd_op.

This is a generic function, and each command has their own individual
.I level, optname, optval
values.  The optlen defines the size pointed by
.I optval.

.SH Available commands

.TP
.B SOCKET_URING_OP_SIOCINQ
Returns the amount of queued unread data in the receive buffer.
The socket must not be in LISTEN state, otherwise an error
.B -EINVAL
is returned in the CQE
.I res
field.
The following arguments are not used for this command
.I level, optname, optval
and
.I optlen.

Negative return value means an error.

For more information about this command, please check
.BR unix(7).

Available since 6.7.

.TP
.B SOCKET_URING_OP_SIOCOUTQ
Returns the amount of unsent data in the socket send queue.
The socket must not be in LISTEN state, otherwise an error
.B -EINVAL
is returned in the CQE
.I res.
field.
The following arguments are not used for this command
.I level, optname, optval
and
.I optlen.

Negative return value means an error.

For more information about this command, please check
.BR unix(7).

.TP
.B SOCKET_URING_OP_GETSOCKOPT
Command to get options for the socket referred to by the socket file descriptor
.I fd.
The arguments are similar to the
.BR getsockopt(2)
system call.

The
.BR SOCKET_URING_OP_GETSOCKOPT
command is limited to
.BR SOL_SOCKET
.I level.

Differently from the
.BR getsockopt(2)
system call, the updated
.I optlen
value is returned in the CQE
.I res
field, on success. On failure, the CQE
.I res
contains a negative error number.

.TP
.B SOCKET_URING_OP_SETSOCKOPT
Command to set options for the socket referred to by the socket file descriptor
.I fd.
The arguments are similar to the
.BR setsockopt(2)
system call.

Available since 6.7.

.SH NOTES
The memory block pointed by
.I optval
needs to be valid/live until the CQE returns.

.SH RETURN VALUE
Dependent on the command.

.SH ERRORS
The CQE
.I res
field will contain the result of the operation.
.SH SEE ALSO
.BR io_uring_get_sqe (3),
.BR io_uring_submit (3),
.BR io_uring_register (2),
.BR unix (7)
